package com.zds.leetcode;

public class q_34 {

    public static void main(String[] args) {

//        System.out.println((0+1)/2);
        int[] nums = new int[]{1};
        System.out.println(searchRange(nums, 1));
    }

    public static int[] searchRange(int[] nums, int target) {
        if (nums.length==0) return new int[]{-1,-1};

        int left = 0;
        int right = nums.length - 1;

        while (left <= right) { // 处理为闭空间
            int mid = left + (right - left) / 2;
            if (nums[mid] == target) right = mid - 1; //  收缩右侧区间
            if (nums[mid] > target) right = mid - 1;
            if (nums[mid] < target) left = mid + 1;
        }
        // 如果找不到，需要返回 [-1, -1]
        // 我这里的理解是其实判断 nums[left] 和 targrt 就可以，但是可能存在数组越界
        // TODO 但其实越界具体会是如何发生的呢，还需要思考
        if (left > nums.length - 1 || left < 0 || nums[left] != target) return new int[]{-1,-1};
        // 此时左侧端点就是起点
        int end = left;
        while (end <= nums.length - 1 && nums[end] == target) {
            end++;
        }
        // end 是开区间
        return new int[]{left, end-1};
    }
}
